home *** CD-ROM | disk | FTP | other *** search
/ Java Primer Plus / Java Primer Plus (Waite Group Proess)(1996).iso / java_Win / demo / MoleculeViewer / Atom.class (.txt) next >
Encoding:
Java Class File  |  1995-12-01  |  2.1 KB  |  105 lines

  1. import java.applet.Applet;
  2. import java.awt.Graphics;
  3. import java.awt.Image;
  4. import java.awt.image.IndexColorModel;
  5. import java.awt.image.MemoryImageSource;
  6.  
  7. class Atom {
  8.    private static Applet applet;
  9.    private static byte[] data = new byte[6400];
  10.    // $FF: renamed from: R int
  11.    private static final int field_0 = 40;
  12.    // $FF: renamed from: hx int
  13.    private static final int field_1 = 15;
  14.    // $FF: renamed from: hy int
  15.    private static final int field_2 = 15;
  16.    private static final int bgGrey = 192;
  17.    private static final int nBalls = 16;
  18.    private static int maxr;
  19.    // $FF: renamed from: Rl int
  20.    private int field_3;
  21.    // $FF: renamed from: Gl int
  22.    private int field_4;
  23.    // $FF: renamed from: Bl int
  24.    private int field_5;
  25.    private Image[] balls;
  26.  
  27.    static void setApplet(Applet var0) {
  28.       applet = var0;
  29.    }
  30.  
  31.    Atom(int var1, int var2, int var3) {
  32.       this.field_3 = var1;
  33.       this.field_4 = var2;
  34.       this.field_5 = var3;
  35.    }
  36.  
  37.    private final int blend(int var1, int var2, float var3) {
  38.       return (int)((float)var2 + (float)(var1 - var2) * var3);
  39.    }
  40.  
  41.    private void Setup() {
  42.       this.balls = new Image[16];
  43.       byte[] var1 = new byte[256];
  44.       var1[0] = -64;
  45.       byte[] var2 = new byte[256];
  46.       var2[0] = -64;
  47.       byte[] var3 = new byte[256];
  48.       var3[0] = -64;
  49.  
  50.       for(int var4 = 0; var4 < 16; ++var4) {
  51.          float var5 = (float)(var4 + 1) / 16.0F;
  52.  
  53.          for(int var6 = maxr; var6 >= 1; --var6) {
  54.             float var7 = (float)var6 / (float)maxr;
  55.             var1[var6] = (byte)this.blend(this.blend(this.field_3, 255, var7), 192, var5);
  56.             var2[var6] = (byte)this.blend(this.blend(this.field_4, 255, var7), 192, var5);
  57.             var3[var6] = (byte)this.blend(this.blend(this.field_5, 255, var7), 192, var5);
  58.          }
  59.  
  60.          IndexColorModel var8 = new IndexColorModel(8, maxr + 1, var1, var2, var3, 0);
  61.          this.balls[var4] = applet.createImage(new MemoryImageSource(80, 80, var8, data, 0, 80));
  62.       }
  63.  
  64.    }
  65.  
  66.    void paint(Graphics var1, int var2, int var3, int var4) {
  67.       Image[] var5 = this.balls;
  68.       if (var5 == null) {
  69.          this.Setup();
  70.          var5 = this.balls;
  71.       }
  72.  
  73.       Image var6 = var5[var4];
  74.       int var7 = 10 + var4;
  75.       var1.drawImage(var6, var2 - (var7 >> 1), var3 - (var7 >> 1), var7, var7, applet);
  76.    }
  77.  
  78.    static {
  79.       int var0 = 0;
  80.       int var1 = 80;
  81.  
  82.       while(true) {
  83.          --var1;
  84.          if (var1 < 0) {
  85.             maxr = var0;
  86.             return;
  87.          }
  88.  
  89.          int var2 = (int)(Math.sqrt((double)(1600 - (var1 - 40) * (var1 - 40))) + (double)0.5F);
  90.          int var3 = var1 * 80 + 40 - var2;
  91.  
  92.          for(int var4 = -var2; var4 < var2; ++var4) {
  93.             int var5 = var4 + 15;
  94.             int var6 = var1 - 40 + 15;
  95.             int var7 = (int)(Math.sqrt((double)(var5 * var5 + var6 * var6)) + (double)0.5F);
  96.             if (var7 > var0) {
  97.                var0 = var7;
  98.             }
  99.  
  100.             data[var3++] = var7 <= 0 ? 1 : (byte)var7;
  101.          }
  102.       }
  103.    }
  104. }
  105.